# Copyright (C) 2026. Logiciel élaboré par l'État, via le DEPS.
# Nom des auteures : Flore Cornuet et Camille Parent, DEPS.
# Ce programme informatique a été développé par le DEPS.
# Il permet de produire les résultats du Culture Études 1-2026.

# Ce programme a été exécuté en septembre 2026 avec la version 4.5.3 de R.
# La publication peut être consultée sur le site du Deps. 
# Ce programme utilise les données du pass Culture et du recensement de la population 2022.

# Bien qu'il n'existe aucune obligation légale à ce sujet, les utilisateurs de ce programme sont
# invités à signaler au DEPS leurs travaux issus de la réutilisation de ce code, ainsi que les
# éventuels problèmes ou anomalies qu'ils y rencontreraient, en écrivant à contact.deps@culture.gouv.fr .
# Ce logiciel est régi par la licence EUPL V1.2 soumise au droit français et européen, respectant
# les principes de diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer
# ce programme sous les conditions de la licence EUPL V1.2, telle que diffusée sur
# https://eupl.eu/1.2/fr/ .
# En contrepartie de l'accessibilité au code source et des droits de copie, de modification et de
# redistribution accordés par cette licence, il n'est offert aux utilisateurs qu'une garantie
# limitée. Pour les mêmes raisons, seule une responsabilité restreinte pèse sur les auteures du
# programme, le titulaire des droits patrimoniaux et les concédants successifs.
# À cet égard l'attention de l'utilisateur est attirée sur les risques associés au chargement, à
# l'utilisation, à la modification et/ou au développement et à la reproduction du logiciel par
# l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à
# manipuler et qui le réserve donc à des développeurs et des professionnels avertis possédant des
# connaissances informatiques approfondies. Les utilisateurs sont donc invités à charger et tester
# l'adéquation du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de
# leurs systèmes et ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les
# mêmes conditions de sécurité.


# chargement des packages ####

library(data.table); library(tidyverse); library(kableExtra)

# chargement des tables intermédiaires ####

tab_cat <- setDT(read_parquet(paste0(chemin_intermediaires, "tab_cat.parquet")))

# === filtre commun : chq300, création + expiration, nés 2003-2005, cat renseignée ===

base <- tab_cat[champ_creation == 1 &
                  champ_expiration == 1 &
                  chq_300 == 1 &
                  annee_naissance %in% 2003:2005 &
                  !is.na(cat_depense)]

# === recodage des catégories fines (instruments et beaux-arts séparés) ===

base[, cat_group := fcase(
  cat_depense == "LIVRE",               "Livres",
  cat_depense == "CINEMA",              "Cinéma",
  cat_depense == "MUSIQUE_LIVE",        "Concerts et festivals",
  cat_depense == "INSTRUMENT",          "dont instruments de musique",
  cat_depense == "BEAUX_ARTS",          "dont matériel de beaux-arts",
  cat_depense == "MUSIQUE_ENREGISTREE", "Musique enregistrée",
  cat_depense == "FILM",                "Films (hors cinéma)",
  cat_depense == "SPECTACLE",           "Spectacle vivant (hors concerts)",
  cat_depense == "JEU",                 "Jeux",
  default = "Autres"
)]

# === dépense par année x catégorie ===

dep <- base[, .(depense = sum(total_depense)), by = .(annee_naissance, cat_group)]

# ligne "Pratique artistique" = instruments + beaux-arts
prat <- dep[cat_group %in% c("dont instruments de musique","dont matériel de beaux-arts"),
            .(cat_group = "Pratique artistique", depense = sum(depense)),
            by = annee_naissance]
dep_all <- rbind(dep, prat)

# === parts par année (dénominateur = total hors doublon "Pratique artistique") ===

denom_an <- dep[, .(tot = sum(depense)), by = annee_naissance]   # dep sans prat = total réel
dep_all  <- merge(dep_all, denom_an, by = "annee_naissance")
dep_all[, part := depense / tot * 100]

tab_an <- dcast(dep_all, cat_group ~ annee_naissance, value.var = "part")

# === colonne Ensemble ===

denom_ens <- dep[, sum(depense)]
ens <- dep_all[, .(depense = sum(depense)), by = cat_group]
ens[, Ensemble := depense / denom_ens * 100]

tab3 <- merge(tab_an, ens[, .(cat_group, Ensemble)], by = "cat_group")
setnames(tab3, c("2003","2004","2005"), c("Nés en 2003","Nés en 2004","Nés en 2005"))

# === arrondi ===

num_cols <- c("Nés en 2003","Nés en 2004","Nés en 2005","Ensemble")
tab3[, (num_cols) := lapply(.SD, round), .SDcols = num_cols]

# === ordre hiérarchique des lignes ===

ordre <- c("Livres","Cinéma","Concerts et festivals",
           "Pratique artistique",
           "dont instruments de musique","dont matériel de beaux-arts",
           "Musique enregistrée","Films (hors cinéma)",
           "Spectacle vivant (hors concerts)","Jeux","Autres")
tab3 <- tab3[order(match(cat_group, ordre))]
setnames(tab3, "cat_group", "Catégorie")

# === kableExtra ===

tab3 |>
  kbl(
    caption = "Tableau 3 : Répartition du montant dépensé avec le chèque de 300 euros, en fonction de l'année de naissance des bénéficiaires (en %)",
    align   = c("l","c","c","c","c")
  ) |>
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = FALSE, position = "center"
  ) |>
  add_indent(which(tab3$Catégorie %in% c("dont instruments de musique",
                                         "dont matériel de beaux-arts"))) |>
  footnote(
    general = paste0(
      "Lecture : les jeunes nés en 2005 ont dépensé en moyenne 44 % de leur chèque ",
      "de 300 euros pour acheter des livres. ",
      "Champ : chèques de 300 euros créés à partir du 21 mai 2021 et expirant avant ",
      "le 28 février 2025. Source : données de l'application pass Culture."
    ),
    general_title = "", footnote_as_chunk = TRUE
  )

tab3

write.table(tab3, "clipboard-256", sep = "\t", row.names = FALSE, dec = ",")

